class SRMeleeSplashFire extends SRMeleeFire;

function HurtRadius(float Damage, float Radius, float MomentumTransfer, float Angle, class<DamageType> DamageType)
{
	local array<Actor> Targets;
	local Actor Target;
	local float ScalarAllowValue;
	local vector HitLocation,InstigatorLocation,VictimLocation,Direction;
	local rotator VR;
	
	ScalarAllowValue = Angle / 360.00 * 2.00 - 1.00;
	
	foreach Weapon.VisibleCollidingActors(class'Actor',Target,Radius+Instigator.CollisionRadius+250,Instigator.Location)
	{
		if ( ( VSize(Target.Location-Instigator.Location) < Target.CollisionRadius + Instigator.CollisionRadius + Radius )
			&&  ( Normal(Instigator.Location-Target.Location) dot Vector(Instigator.Rotation) < ScalarAllowValue ) )
		{
			Targets.Insert(0,1);
			Targets[0] = Target;
		}
	}
	
	VR = Instigator.GetViewRotation();
	Direction = Vector(VR);
	InstigatorLocation = Instigator.Location << VR;
	InstigatorLocation.Z = 0;
	
	while ( Targets.Length > 0 )
	{
		if ( Targets[0] != MainTarget )
		{
			HitLocation = Targets[0].Location;
			VictimLocation = HitLocation << VR;
			VictimLocation.Z = 0;
			HitLocation.Z = Instigator.Location.Z + Direction.Z * VSize(VictimLocation-InstigatorLocation);
			AfflictTarget(Targets[0],Damage,HitLocation,(HitLocation-Instigator.Location),DamageType);
		}

		Targets.Remove(0,1);
	}
}

defaultproperties
{
}
